/*
 * Elemento.h
 *
 *  Created on: 13/04/2014
 *      Author: ariel
 */

#ifndef Elemento_H_
#define Elemento_H_
#include <iostream>
#include <string>
using namespace std;

#include "Const.h"
#include "../entities/Twit.h"

class Elemento {

private:
	int id;
	Twit* registro;
	char status;

public:
	Elemento();
	Elemento(Twit* registro, int index);
	Elemento(Twit*, int, char);
	Elemento(const Elemento&);

	virtual ~Elemento();
	int getId() const;
	void setId(int id);
	Twit* getRegistro();
	void setRegistro(Twit* registro);
	char getStatus() const;
	void setStatus(char status);

	bool isBusy();
	bool isFreed();
	bool isDeleted();

	virtual string serialize();
	virtual void unserialize(std::string &buffer);
	virtual int getDataSize();

	friend ostream& operator << (ostream &o,const Elemento &b);

};

#endif /* Elemento_H_ */
